home *** CD-ROM | disk | FTP | other *** search
/ Aminet 5 / Aminet 5 - March 1995.iso / Aminet / util / gnu / a2_0b_Emacs_sr.lha / Emacs-19.25 / src / syswait.h < prev    next >
C/C++ Source or Header  |  1994-08-18  |  3KB  |  92 lines

  1. /* Define wait system call interface for Emacs.
  2.    Copyright (C) 1993, 1994 Free Software Foundation, Inc.
  3.  
  4. This file is part of GNU Emacs.
  5.  
  6. GNU Emacs is free software; you can redistribute it and/or modify
  7. it under the terms of the GNU General Public License as published by
  8. the Free Software Foundation; either version 2, or (at your option)
  9. any later version.
  10.  
  11. GNU Emacs is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with GNU Emacs; see the file COPYING.  If not, write to
  18. the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Define the structure that the wait system call stores.
  21.    On many systems, there is a structure defined for this.
  22.    But on vanilla-ish USG systems there is not.  */
  23.  
  24. #ifndef VMS
  25. #ifndef WAITTYPE
  26. #if (!defined (BSD) && !defined (UNIPLUS) && !defined (STRIDE) && !(defined (HPUX) && !defined (NOMULTIPLEJOBS)) && !defined (HAVE_WAIT_HEADER))|| defined (LINUX) 
  27. #define WAITTYPE int
  28. #ifndef AMIGA
  29. #define WIFSTOPPED(w) ((w&0377) == 0177)
  30. #define WIFSIGNALED(w) ((w&0377) != 0177 && (w&~0377) == 0)
  31. #define WIFEXITED(w) ((w&0377) == 0)
  32. #define WSTOPSIG(w) (w >> 8)
  33. #define WTERMSIG(w) (w & 0377)
  34. #endif
  35. #define WRETCODE(w) (w >> 8)
  36. #ifndef WCOREDUMP
  37. #define WCOREDUMP(w) ((w&0200) != 0)
  38. #endif
  39. #else 
  40. #ifdef BSD4_1
  41. #include <wait.h>
  42. #else
  43. #include <sys/wait.h>
  44. #endif /* not BSD 4.1 */
  45.  
  46. #define WAITTYPE union wait
  47. #define WRETCODE(w) w.w_retcode
  48. #undef WCOREDUMP        /* Later BSDs define this name differently.  */
  49. #define WCOREDUMP(w) w.w_coredump
  50.  
  51. #if defined (HPUX) || defined (convex)
  52. /* HPUX version 7 has broken definitions of these.  */
  53. /* pvogel@convex.com says the convex does too.  */
  54. #undef WTERMSIG
  55. #undef WSTOPSIG
  56. #undef WIFSTOPPED
  57. #undef WIFSIGNALED
  58. #undef WIFEXITED
  59. #endif /* HPUX | convex */
  60.  
  61. #ifndef WTERMSIG
  62. #define WTERMSIG(w) w.w_termsig
  63. #endif
  64. #ifndef WSTOPSIG
  65. #define WSTOPSIG(w) w.w_stopsig
  66. #endif
  67. #ifndef WIFSTOPPED
  68. #define WIFSTOPPED(w) (WTERMSIG (w) == 0177)
  69. #endif
  70. #ifndef WIFSIGNALED
  71. #define WIFSIGNALED(w) (WTERMSIG (w) != 0177 && (WSTOPSIG (w)) == 0)
  72. #endif
  73. #ifndef WIFEXITED
  74. #define WIFEXITED(w) (WTERMSIG (w) == 0)
  75. #endif
  76. #endif /* BSD or UNIPLUS or STRIDE */
  77. #endif /* no WAITTYPE */
  78. #else /* VMS */
  79. #define WAITTYPE int
  80. #define WIFSTOPPED(w) 0
  81. #define WIFSIGNALED(w) 0
  82. #define WIFEXITED(w) ((w) != -1)
  83. #define WRETCODE(w) (w)
  84. #define WSTOPSIG(w) (w)
  85. #define WCOREDUMP(w) 0
  86. #define WTERMSIG(w) (w)
  87. #include <ssdef.h>
  88. #include <iodef.h>
  89. #include <clidef.h>
  90. #include "vmsproc.h"
  91. #endif /* VMS */
  92.